package com.dd.demo01.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Transactional;

import javax.sql.DataSource;

/**
 * @author: lkd
 * @date: 2023/05/16/17:43
 * @Description:
 */
@EnableTransactionManagement
@Configuration
public class Config {
	/**
	 * 注解 @EnableTransactionManagement 开启事务支持，等同于xml配置文件中的 <tx:annotation-driven />
	 * <p>会自动注册一个 PlatformTransactionManager 事务管理器
	 * <p>1、如果添加的是 spring-boot-starter-jdbc 依赖，框架会默认注入 DataSourceTransactionManager 实例。
	 * <p>2、如果添加的是 spring-boot-starter-data-jpa 依赖，框架会默认注入 JpaTransactionManager 实例。
	 */
	@Bean
	public PlatformTransactionManager transactionManager(@Autowired DataSource dataSource) {
		 // 自己自定义注册一个事务管理器，必须传入一个 DataSource
		return new DataSourceTransactionManager(dataSource);
	}


//	@Primary
//	@Bean(name = "myDataSource")
//	public DataSource myDataSource() {
//		DriverManagerDataSource dataSource = new DriverManagerDataSource();
//		dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
//		dataSource.setUrl("jdbc:mysql://127.0.0.1/clouddemo?useUnicode=true&characterEncoding=gbk");
//		dataSource.setUsername("root");
//		dataSource.setPassword("lkd666");
//		return dataSource;
//	}


}
